#ifndef HEADER_IDEA_H
#define HEADER_IDEA_H

#ifdef  __cplusplus
extern "C" {
#endif

#define IDEA_ENCRYPT	1
#define IDEA_DECRYPT	0

#define IDEA_BLOCK	8
#define IDEA_KEY_LENGTH	16

#define IDEA_INT unsigned int
#define U8 unsigned char
#define U16 unsigned short
#define U32 unsigned long

typedef struct idea_key_st
{
	U32 data[9][6];
} IDEA_KEY_SCHEDULE;

char *idea_options(void);
void idea_ecb_encrypt(U8 *in, U8 *out, IDEA_KEY_SCHEDULE *ks);
void idea_set_encrypt_key(U8 *key, IDEA_KEY_SCHEDULE *ks);
void idea_set_decrypt_key(IDEA_KEY_SCHEDULE *ek, IDEA_KEY_SCHEDULE *dk);
void idea_encrypt(U32 *in, IDEA_KEY_SCHEDULE *ks);

#ifdef  __cplusplus
}
#endif

#endif
